//
//  GSPlatform.h
//  GSEngine
//
//  Created by Гукун Александр on 1/22/14.
//  Copyright (c) 2014 SNK. All rights reserved.
//

#ifndef __GSEngine__GSPlatform__
#define __GSEngine__GSPlatform__

#include <iostream>
#include <GSEngine/Main/GSWindow.h>
#include <GSEngine/Render/GSRenderSystem.h>

namespace GSEngine
{
    class GSWindow;
    class GSRenderSystem;

    class GSPlatform
    {
    public:
        GSPlatform();
        virtual ~GSPlatform();
        virtual GSWindow* createWindow(size_t width, size_t height) = 0;
        virtual int startLoop() = 0;
        GSWindow* getWindow();
        GSRenderSystem* getRenderSystem();
        std::string getResourcesPath() const;
    protected:
        GSWindow* m_window;
        GSRenderSystem* m_renderSystem;
        std::string m_resourcesFolderPath;
    };

    inline GSWindow* GSPlatform::getWindow()
    {
        return m_window;
    }
    inline GSRenderSystem* GSPlatform::getRenderSystem()
    {
        return m_renderSystem;
    }
    inline std::string GSPlatform::getResourcesPath() const
    {
        return m_resourcesFolderPath;
    }
}
#endif /* defined(__GSEngine__GSPlatform__) */
